{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# MNIST Image Classification Using Keras"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from keras.datasets import mnist\n",
    "from keras.preprocessing.image import ImageDataGenerator\n",
    "from keras.models import Sequential, load_model, Model\n",
    "from keras.layers import Input, Dense, Dropout, Activation, Flatten\n",
    "from keras.layers import Convolution2D, MaxPooling2D\n",
    "from keras.layers.noise import GaussianNoise\n",
    "from keras.layers.normalization import BatchNormalization\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import time, pickle\n",
    "from keras.utils import to_categorical\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Import & Preprocessing\n",
    "\n",
    "由于MNIST数据集的图像尺寸为28x28，且为灰白图像，因此需要先将颜色通道变换出来以方便后面使用。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "(X_train, y_train), (X_test, y_test) = mnist.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((60000, 28, 28, 1), (60000,), (10000, 28, 28, 1), (10000,))"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train = X_train[:, :, :, None]\n",
    "X_test = X_test[:, :, :, None]\n",
    "X_train.shape, y_train.shape, X_test.shape, y_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X_train = X_train.astype('float32')\n",
    "X_test = X_test.astype('float32')\n",
    "X_train /= 255\n",
    "X_test /= 255"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "nb_classes = 10\n",
    "y_train = to_categorical(y_train, nb_classes)\n",
    "y_test = to_categorical(y_test, nb_classes)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model 1 - 传统神经网络（MLPs）\n",
    "\n",
    "首先让我们看一下传统多层前馈神经网络（或者称为多层感知器网络）的模型性能。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_2 (InputLayer)         (None, 28, 28, 1)         0         \n",
      "_________________________________________________________________\n",
      "flatten_2 (Flatten)          (None, 784)               0         \n",
      "_________________________________________________________________\n",
      "dense_4 (Dense)              (None, 1024)              803840    \n",
      "_________________________________________________________________\n",
      "dense_5 (Dense)              (None, 1024)              1049600   \n",
      "_________________________________________________________________\n",
      "dense_6 (Dense)              (None, 10)                10250     \n",
      "=================================================================\n",
      "Total params: 1,863,690\n",
      "Trainable params: 1,863,690\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "x = Input(shape=(28, 28, 1))\n",
    "y = x\n",
    "y = Flatten()(y)\n",
    "y = Dense(1024, activation='relu', kernel_initializer='he_normal')(y)\n",
    "y = Dense(1024, activation='relu', kernel_initializer='he_normal')(y)\n",
    "y = Dense(nb_classes, activation='softmax', kernel_initializer='he_normal')(y)\n",
    "\n",
    "model1 = Model(inputs=x, outputs=y, name='MLP')\n",
    "model1.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])\n",
    "model1.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 60000 samples, validate on 10000 samples\n",
      "Epoch 1/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.3560 - acc: 0.8988 - val_loss: 0.1641 - val_acc: 0.9527\n",
      "Epoch 2/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.1385 - acc: 0.9595 - val_loss: 0.1306 - val_acc: 0.9610\n",
      "Epoch 3/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0941 - acc: 0.9724 - val_loss: 0.1083 - val_acc: 0.9664\n",
      "Epoch 4/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0686 - acc: 0.9805 - val_loss: 0.0817 - val_acc: 0.9752\n",
      "Epoch 5/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0534 - acc: 0.9842 - val_loss: 0.0768 - val_acc: 0.9764\n",
      "Epoch 6/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0408 - acc: 0.9884 - val_loss: 0.0729 - val_acc: 0.9779\n",
      "Epoch 7/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0319 - acc: 0.9911 - val_loss: 0.0659 - val_acc: 0.9791\n",
      "Epoch 8/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0245 - acc: 0.9937 - val_loss: 0.0629 - val_acc: 0.9805\n",
      "Epoch 9/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0196 - acc: 0.9954 - val_loss: 0.0616 - val_acc: 0.9816\n",
      "Epoch 10/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0149 - acc: 0.9969 - val_loss: 0.0612 - val_acc: 0.9813\n",
      "Epoch 11/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0116 - acc: 0.9979 - val_loss: 0.0752 - val_acc: 0.9778\n",
      "Epoch 12/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0091 - acc: 0.9986 - val_loss: 0.0643 - val_acc: 0.9825\n",
      "Epoch 13/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0069 - acc: 0.9990 - val_loss: 0.0600 - val_acc: 0.9824\n",
      "Epoch 14/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0054 - acc: 0.9993 - val_loss: 0.0620 - val_acc: 0.9818\n",
      "Epoch 15/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0044 - acc: 0.9994 - val_loss: 0.0658 - val_acc: 0.9818\n",
      "Epoch 16/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0033 - acc: 0.9997 - val_loss: 0.0650 - val_acc: 0.9809\n",
      "Epoch 17/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0024 - acc: 0.9999 - val_loss: 0.0642 - val_acc: 0.9821\n",
      "Epoch 18/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0019 - acc: 0.9999 - val_loss: 0.0667 - val_acc: 0.9818\n",
      "Epoch 19/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0015 - acc: 0.9999 - val_loss: 0.0686 - val_acc: 0.9810\n",
      "Epoch 20/50\n",
      "60000/60000 [==============================] - 1s - loss: 0.0011 - acc: 1.0000 - val_loss: 0.0668 - val_acc: 0.9823\n",
      "Epoch 21/50\n",
      "60000/60000 [==============================] - 1s - loss: 9.6023e-04 - acc: 1.0000 - val_loss: 0.0672 - val_acc: 0.9829\n",
      "Epoch 22/50\n",
      "60000/60000 [==============================] - 1s - loss: 8.1924e-04 - acc: 1.0000 - val_loss: 0.0682 - val_acc: 0.9818\n",
      "Epoch 23/50\n",
      "60000/60000 [==============================] - 1s - loss: 6.6121e-04 - acc: 1.0000 - val_loss: 0.0692 - val_acc: 0.9821\n",
      "Epoch 24/50\n",
      "60000/60000 [==============================] - 1s - loss: 5.7608e-04 - acc: 1.0000 - val_loss: 0.0702 - val_acc: 0.9819\n",
      "Epoch 25/50\n",
      "60000/60000 [==============================] - 1s - loss: 4.9516e-04 - acc: 1.0000 - val_loss: 0.0701 - val_acc: 0.9822\n",
      "Epoch 26/50\n",
      "60000/60000 [==============================] - 1s - loss: 4.4938e-04 - acc: 1.0000 - val_loss: 0.0716 - val_acc: 0.9823\n",
      "Epoch 27/50\n",
      "60000/60000 [==============================] - 1s - loss: 4.0119e-04 - acc: 1.0000 - val_loss: 0.0721 - val_acc: 0.9819\n",
      "Epoch 28/50\n",
      "60000/60000 [==============================] - 1s - loss: 3.7053e-04 - acc: 1.0000 - val_loss: 0.0717 - val_acc: 0.9823\n",
      "Epoch 29/50\n",
      "60000/60000 [==============================] - 1s - loss: 3.3511e-04 - acc: 1.0000 - val_loss: 0.0727 - val_acc: 0.9821\n",
      "Epoch 30/50\n",
      "60000/60000 [==============================] - 1s - loss: 3.0805e-04 - acc: 1.0000 - val_loss: 0.0725 - val_acc: 0.9817\n",
      "Epoch 31/50\n",
      "60000/60000 [==============================] - 1s - loss: 2.8622e-04 - acc: 1.0000 - val_loss: 0.0734 - val_acc: 0.9822\n",
      "Epoch 32/50\n",
      "60000/60000 [==============================] - 1s - loss: 2.6499e-04 - acc: 1.0000 - val_loss: 0.0735 - val_acc: 0.9824\n",
      "Epoch 33/50\n",
      "60000/60000 [==============================] - 1s - loss: 2.4765e-04 - acc: 1.0000 - val_loss: 0.0743 - val_acc: 0.9822\n",
      "Epoch 34/50\n",
      "60000/60000 [==============================] - 1s - loss: 2.3297e-04 - acc: 1.0000 - val_loss: 0.0749 - val_acc: 0.9820\n",
      "Epoch 35/50\n",
      "60000/60000 [==============================] - 1s - loss: 2.1943e-04 - acc: 1.0000 - val_loss: 0.0746 - val_acc: 0.9826\n",
      "Epoch 36/50\n",
      "60000/60000 [==============================] - 1s - loss: 2.0703e-04 - acc: 1.0000 - val_loss: 0.0756 - val_acc: 0.9816\n",
      "Epoch 37/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.9644e-04 - acc: 1.0000 - val_loss: 0.0754 - val_acc: 0.9818\n",
      "Epoch 38/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.8865e-04 - acc: 1.0000 - val_loss: 0.0763 - val_acc: 0.9820\n",
      "Epoch 39/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.7870e-04 - acc: 1.0000 - val_loss: 0.0759 - val_acc: 0.9820\n",
      "Epoch 40/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.7047e-04 - acc: 1.0000 - val_loss: 0.0767 - val_acc: 0.9823\n",
      "Epoch 41/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.6278e-04 - acc: 1.0000 - val_loss: 0.0769 - val_acc: 0.9824\n",
      "Epoch 42/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.5597e-04 - acc: 1.0000 - val_loss: 0.0771 - val_acc: 0.9820\n",
      "Epoch 43/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.4900e-04 - acc: 1.0000 - val_loss: 0.0774 - val_acc: 0.9819\n",
      "Epoch 44/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.4310e-04 - acc: 1.0000 - val_loss: 0.0779 - val_acc: 0.9822\n",
      "Epoch 45/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.3797e-04 - acc: 1.0000 - val_loss: 0.0782 - val_acc: 0.9823\n",
      "Epoch 46/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.3249e-04 - acc: 1.0000 - val_loss: 0.0782 - val_acc: 0.9816\n",
      "Epoch 47/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.2822e-04 - acc: 1.0000 - val_loss: 0.0781 - val_acc: 0.9820\n",
      "Epoch 48/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.2339e-04 - acc: 1.0000 - val_loss: 0.0787 - val_acc: 0.9824\n",
      "Epoch 49/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.1919e-04 - acc: 1.0000 - val_loss: 0.0787 - val_acc: 0.9820\n",
      "Epoch 50/50\n",
      "60000/60000 [==============================] - 1s - loss: 1.1524e-04 - acc: 1.0000 - val_loss: 0.0792 - val_acc: 0.9820\n",
      "@ Total Time Spent: 56.50 seconds\n"
     ]
    }
   ],
   "source": [
    "nb_epoch = 50\n",
    "batch_size = 256\n",
    "start = time.time()\n",
    "h = model1.fit(x=X_train, y=y_train, batch_size=batch_size, epochs=nb_epoch, validation_data=(X_test, y_test), shuffle=True)\n",
    "model1.save('MNIST_model_no_data_augmentation.h5')\n",
    "print('@ Total Time Spent: %.2f seconds' % (time.time() - start))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nQ0AAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x213a75e4c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_acc_loss(h, nb_epoch):\n",
    "    acc, loss, val_acc, val_loss = h.history['acc'], h.history['loss'], h.history['val_acc'], h.history['val_loss']\n",
    "    plt.figure(figsize=(15, 5))\n",
    "    plt.subplot(121)\n",
    "    plt.plot(range(nb_epoch), acc, label='Train')\n",
    "    plt.plot(range(nb_epoch), val_acc, label='Test')\n",
    "    plt.title('Accuracy over ' + str(nb_epoch) + ' Epochs', size=15)\n",
    "    plt.legend()\n",
    "    plt.grid(True)\n",
    "    plt.subplot(122)\n",
    "    plt.plot(range(nb_epoch), loss, label='Train')\n",
    "    plt.plot(range(nb_epoch), val_loss, label='Test')\n",
    "    plt.title('Loss over ' + str(nb_epoch) + ' Epochs', size=15)\n",
    "    plt.legend()\n",
    "    plt.grid(True)\n",
    "    plt.show()\n",
    "    \n",
    "plot_acc_loss(h, nb_epoch)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 可以看到，仅仅使用了两个1024节点的全连接层，就可以让模型在测试集上的准确度达到98%，且耗时不到1分钟。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training Accuracy = 100.00 %     loss = 0.000110\n",
      "Testing Accuracy = 98.20 %    loss = 0.079164\n"
     ]
    }
   ],
   "source": [
    "loss, accuracy = model1.evaluate(X_train, y_train, verbose=0)\n",
    "print(\"Training Accuracy = %.2f %%     loss = %f\" % (accuracy * 100, loss))\n",
    "loss, accuracy = model1.evaluate(X_test, y_test, verbose=0)\n",
    "print(\"Testing Accuracy = %.2f %%    loss = %f\" % (accuracy * 100, loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model 2 - 卷积神经网络\n",
    "\n",
    "现在让我们来看看如果在模型1的前端加上卷积层，效果会如何。这里用的是在CIFAR10数据集能够达到89%准确率的模型\n",
    "（有一种杀鸡用牛刀的感觉...）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_2 (InputLayer)         (None, 28, 28, 1)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_7 (Conv2D)            (None, 28, 28, 64)        640       \n",
      "_________________________________________________________________\n",
      "conv2d_8 (Conv2D)            (None, 28, 28, 64)        36928     \n",
      "_________________________________________________________________\n",
      "max_pooling2d_4 (MaxPooling2 (None, 14, 14, 64)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_9 (Conv2D)            (None, 14, 14, 128)       73856     \n",
      "_________________________________________________________________\n",
      "conv2d_10 (Conv2D)           (None, 14, 14, 128)       147584    \n",
      "_________________________________________________________________\n",
      "max_pooling2d_5 (MaxPooling2 (None, 7, 7, 128)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_11 (Conv2D)           (None, 7, 7, 256)         295168    \n",
      "_________________________________________________________________\n",
      "conv2d_12 (Conv2D)           (None, 7, 7, 256)         590080    \n",
      "_________________________________________________________________\n",
      "max_pooling2d_6 (MaxPooling2 (None, 3, 3, 256)         0         \n",
      "_________________________________________________________________\n",
      "flatten_2 (Flatten)          (None, 2304)              0         \n",
      "_________________________________________________________________\n",
      "dense_3 (Dense)              (None, 128)               295040    \n",
      "_________________________________________________________________\n",
      "dropout_2 (Dropout)          (None, 128)               0         \n",
      "_________________________________________________________________\n",
      "dense_4 (Dense)              (None, 10)                1290      \n",
      "=================================================================\n",
      "Total params: 1,440,586\n",
      "Trainable params: 1,440,586\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "x = Input(shape=(28, 28, 1))\n",
    "y = x\n",
    "y = Convolution2D(filters=64, kernel_size=3, strides=1, padding='same', activation='relu', kernel_initializer='he_normal')(y)\n",
    "y = Convolution2D(filters=64, kernel_size=3, strides=1, padding='same', activation='relu', kernel_initializer='he_normal')(y)\n",
    "y = MaxPooling2D(pool_size=2, strides=2, padding='valid')(y)\n",
    "\n",
    "y = Convolution2D(filters=128, kernel_size=3, strides=1, padding='same', activation='relu', kernel_initializer='he_normal')(y)\n",
    "y = Convolution2D(filters=128, kernel_size=3, strides=1, padding='same', activation='relu', kernel_initializer='he_normal')(y)\n",
    "y = MaxPooling2D(pool_size=2, strides=2, padding='valid')(y)\n",
    "\n",
    "y = Convolution2D(filters=256, kernel_size=3, strides=1, padding='same', activation='relu', kernel_initializer='he_normal')(y)\n",
    "y = Convolution2D(filters=256, kernel_size=3, strides=1, padding='same', activation='relu', kernel_initializer='he_normal')(y)\n",
    "y = MaxPooling2D(pool_size=2, strides=2, padding='valid')(y)\n",
    "\n",
    "y = Flatten()(y)\n",
    "y = Dense(units=128, activation='relu', kernel_initializer='he_normal')(y)\n",
    "y = Dropout(0.5)(y)\n",
    "y = Dense(units=nb_classes, activation='softmax', kernel_initializer='he_normal')(y)\n",
    "\n",
    "model2 = Model(inputs=x, outputs=y, name='model1')\n",
    "model2.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])\n",
    "model2.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 60000 samples, validate on 10000 samples\n",
      "Epoch 1/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.3775 - acc: 0.8781 - val_loss: 0.0828 - val_acc: 0.9747\n",
      "Epoch 2/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0708 - acc: 0.9795 - val_loss: 0.0432 - val_acc: 0.9854\n",
      "Epoch 3/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0481 - acc: 0.9866 - val_loss: 0.0271 - val_acc: 0.9911\n",
      "Epoch 4/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0348 - acc: 0.9891 - val_loss: 0.0227 - val_acc: 0.9932\n",
      "Epoch 5/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0273 - acc: 0.9921 - val_loss: 0.0208 - val_acc: 0.9926\n",
      "Epoch 6/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0221 - acc: 0.9931 - val_loss: 0.0256 - val_acc: 0.9927\n",
      "Epoch 7/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0184 - acc: 0.9947 - val_loss: 0.0172 - val_acc: 0.9947\n",
      "Epoch 8/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0157 - acc: 0.9953 - val_loss: 0.0176 - val_acc: 0.9943\n",
      "Epoch 9/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0116 - acc: 0.9961 - val_loss: 0.0198 - val_acc: 0.9947\n",
      "Epoch 10/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0096 - acc: 0.9968 - val_loss: 0.0184 - val_acc: 0.9946\n",
      "Epoch 11/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0091 - acc: 0.9970 - val_loss: 0.0205 - val_acc: 0.9942\n",
      "Epoch 12/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0067 - acc: 0.9978 - val_loss: 0.0204 - val_acc: 0.9943\n",
      "Epoch 13/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0061 - acc: 0.9982 - val_loss: 0.0165 - val_acc: 0.9958\n",
      "Epoch 14/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0053 - acc: 0.9983 - val_loss: 0.0247 - val_acc: 0.9926\n",
      "Epoch 15/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0049 - acc: 0.9984 - val_loss: 0.0211 - val_acc: 0.9946\n",
      "Epoch 16/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0045 - acc: 0.9986 - val_loss: 0.0210 - val_acc: 0.9947\n",
      "Epoch 17/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0040 - acc: 0.9985 - val_loss: 0.0222 - val_acc: 0.9946\n",
      "Epoch 18/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0038 - acc: 0.9988 - val_loss: 0.0242 - val_acc: 0.9949\n",
      "Epoch 19/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0031 - acc: 0.9990 - val_loss: 0.0239 - val_acc: 0.9950\n",
      "Epoch 20/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0032 - acc: 0.9990 - val_loss: 0.0221 - val_acc: 0.9949\n",
      "Epoch 21/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0023 - acc: 0.9992 - val_loss: 0.0213 - val_acc: 0.9950\n",
      "Epoch 22/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0018 - acc: 0.9995 - val_loss: 0.0206 - val_acc: 0.9951\n",
      "Epoch 23/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0028 - acc: 0.9990 - val_loss: 0.0238 - val_acc: 0.9956\n",
      "Epoch 24/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0016 - acc: 0.9995 - val_loss: 0.0261 - val_acc: 0.9956\n",
      "Epoch 25/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0018 - acc: 0.9994 - val_loss: 0.0309 - val_acc: 0.9941\n",
      "Epoch 26/50\n",
      "60000/60000 [==============================] - 8s - loss: 9.9579e-04 - acc: 0.9996 - val_loss: 0.0269 - val_acc: 0.9953\n",
      "Epoch 27/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0016 - acc: 0.9995 - val_loss: 0.0262 - val_acc: 0.9951\n",
      "Epoch 28/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0018 - acc: 0.9994 - val_loss: 0.0273 - val_acc: 0.9951\n",
      "Epoch 29/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0013 - acc: 0.9996 - val_loss: 0.0264 - val_acc: 0.9947\n",
      "Epoch 30/50\n",
      "60000/60000 [==============================] - 8s - loss: 9.1219e-04 - acc: 0.9997 - val_loss: 0.0312 - val_acc: 0.9939\n",
      "Epoch 31/50\n",
      "60000/60000 [==============================] - 8s - loss: 8.3112e-04 - acc: 0.9998 - val_loss: 0.0324 - val_acc: 0.9930\n",
      "Epoch 32/50\n",
      "60000/60000 [==============================] - 8s - loss: 8.9540e-04 - acc: 0.9997 - val_loss: 0.0275 - val_acc: 0.9949\n",
      "Epoch 33/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0014 - acc: 0.9995 - val_loss: 0.0287 - val_acc: 0.9952\n",
      "Epoch 34/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0011 - acc: 0.9996 - val_loss: 0.0221 - val_acc: 0.9961\n",
      "Epoch 35/50\n",
      "60000/60000 [==============================] - 8s - loss: 8.4860e-04 - acc: 0.9997 - val_loss: 0.0322 - val_acc: 0.9951\n",
      "Epoch 36/50\n",
      "60000/60000 [==============================] - 8s - loss: 0.0014 - acc: 0.9996 - val_loss: 0.0302 - val_acc: 0.9946\n",
      "Epoch 37/50\n",
      "60000/60000 [==============================] - 8s - loss: 7.5141e-04 - acc: 0.9998 - val_loss: 0.0277 - val_acc: 0.9954\n",
      "Epoch 38/50\n",
      "60000/60000 [==============================] - 8s - loss: 4.6628e-04 - acc: 0.9999 - val_loss: 0.0300 - val_acc: 0.9951\n",
      "Epoch 39/50\n",
      "60000/60000 [==============================] - 8s - loss: 5.8248e-04 - acc: 0.9999 - val_loss: 0.0360 - val_acc: 0.9946\n",
      "Epoch 40/50\n",
      "60000/60000 [==============================] - 8s - loss: 4.6957e-04 - acc: 0.9998 - val_loss: 0.0304 - val_acc: 0.9949\n",
      "Epoch 41/50\n",
      "60000/60000 [==============================] - 8s - loss: 2.9024e-04 - acc: 0.9999 - val_loss: 0.0317 - val_acc: 0.9954\n",
      "Epoch 42/50\n",
      "60000/60000 [==============================] - 8s - loss: 4.3539e-04 - acc: 0.9999 - val_loss: 0.0353 - val_acc: 0.9956\n",
      "Epoch 43/50\n",
      "60000/60000 [==============================] - 8s - loss: 5.8100e-04 - acc: 0.9998 - val_loss: 0.0326 - val_acc: 0.9953\n",
      "Epoch 44/50\n",
      "60000/60000 [==============================] - 8s - loss: 6.0035e-04 - acc: 0.9998 - val_loss: 0.0300 - val_acc: 0.9948\n",
      "Epoch 45/50\n",
      "60000/60000 [==============================] - 8s - loss: 5.4690e-04 - acc: 0.9998 - val_loss: 0.0296 - val_acc: 0.9948\n",
      "Epoch 46/50\n",
      "60000/60000 [==============================] - 8s - loss: 8.5087e-04 - acc: 0.9997 - val_loss: 0.0348 - val_acc: 0.9955\n",
      "Epoch 47/50\n",
      "60000/60000 [==============================] - 8s - loss: 9.2257e-04 - acc: 0.9996 - val_loss: 0.0299 - val_acc: 0.9950\n",
      "Epoch 48/50\n",
      "60000/60000 [==============================] - 8s - loss: 9.2295e-04 - acc: 0.9998 - val_loss: 0.0258 - val_acc: 0.9954\n",
      "Epoch 49/50\n",
      "60000/60000 [==============================] - 8s - loss: 1.3730e-04 - acc: 1.0000 - val_loss: 0.0282 - val_acc: 0.9959\n",
      "Epoch 50/50\n",
      "60000/60000 [==============================] - 8s - loss: 6.3804e-05 - acc: 1.0000 - val_loss: 0.0272 - val_acc: 0.9957\n",
      "@ Total Time Spent: 430.37 seconds\n"
     ]
    }
   ],
   "source": [
    "nb_epoch = 50\n",
    "batch_size = 256\n",
    "start = time.time()\n",
    "h = model2.fit(x=X_train, y=y_train, batch_size=batch_size, epochs=nb_epoch, validation_data=(X_test, y_test), shuffle=True)\n",
    "model2.save('MNIST_model_no_data_augmentation_CNN.h5')\n",
    "print('@ Total Time Spent: %.2f seconds' % (time.time() - start))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bfb0a0e588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_acc_loss(h, nb_epoch)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 可以看到，使用CNN的模型收敛速度要快的多，经过50代训练，可以达到99.5%的准确率，训练用时460秒。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training Accuracy = 100.00 %     loss = 0.000001\n",
      "Testing Accuracy = 99.57 %    loss = 0.027190\n"
     ]
    }
   ],
   "source": [
    "loss, accuracy = model2.evaluate(X_train, y_train, verbose=0)\n",
    "print(\"Training Accuracy = %.2f %%     loss = %f\" % (accuracy * 100, loss))\n",
    "loss, accuracy = model2.evaluate(X_test, y_test, verbose=0)\n",
    "print(\"Testing Accuracy = %.2f %%    loss = %f\" % (accuracy * 100, loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualizations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nVqGRAACAStlwww2DbNSoUUG22mqrBVnWxdwuvvjiaP7Tn/40yM4888wgu/HGGzOdB81j7NixQXbo\noYcGmVm41sULL7wQZOPGjQuyMWPGRM89e/bsDCNEC55RAwAAAICcYaIGAAAAADnDRA0AAAAAcoaJ\nGgAAAADkTFmLiZjZDEnvS/pM0qe1flf4VHTtmu3HPG3atGgee5EmSkdvkRo6i9Q0S2f32muvIIst\nHFINvXr1CrLjjz8+yO6+++4ge+utt6oyppQ1Ymdff/31aN6zZ88giy1uE8s22mijIDv77LOD7PTT\nT4+ee+bMmUG2++67B9mMGTOi+zebSqz6uIu7L6jAcYBaordIDZ1FaugsUkNnkStc+ggAAAAAOVPu\nRM0lPWxmk8xsRGwDMxthZhPNbGKZ5wIqZYm9pbPIITqL1NBZpIbHtMidci993MHdXzOzNSU9ZGYv\nuvuTrTdw99GSRkuSmWV7d0egupbYWzqLHKKzSA2dRWp4TIvcKWui5u6vFT/PM7PxkgZJenLJezW2\nIUOGBNnIkSMz7Ttq1KhKDwcR9BapobNITbN09oMPPgiyzz77LMi6dOlSi+Fos802C7IxY8YE2cEH\nHxxk77//fjWGlIzUO9u/f/8gW2mlleowkoL2FtL70pe+FGRTpkwJsksuuSTIzjzzzPIHlpiSL300\nsxXMbKWWryXtLmlypQYGVAO9RWroLFJDZ5EaOou8KucZtZ6SxptZy3Fudfe/VGRUQPXQW6SGziI1\ndBapobPIpZInau4+XdJXKzgWoOroLVJDZ5EaOovU0FnkFcvzAwAAAEDOWOxdx6t2sgZbIadbt25B\n9thjjwXZNttsE2STJ4eXPm+33XbR8zT7C3xbc3er5fkarbOoPTpbeT169Aiy4447LshiCzkNGjSo\nrPPst99+mffPeszDDjssyBYvXlzWeco0yd23rtXJGq2zP/jBD4Jsk002CbJYZ2OKl+MFynn89rOf\n/SzILr/88pKPlwM17ayUv94ut9xyQTZ79uzott27d890zFtvvTXI3nvvvUz7rr322tF8n332ybR/\nbFGeCy64IMjOOOOMTMfLoyyPD3hGDQAAAAByhokaAAAAAOQMEzUAAAAAyBkmagAAAACQMywmUoa+\nffsG2f/8z/8EWexnfPTRRwfZddddV5FxNTIWZqif2IuPjzzyyOi2t912W5BdeumlQbb++usHWeyF\n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\nrfgP5JQMhzxO0idqot82oGR56OwNkgab2UFmtrKZbSzpF5Lud/fpnbkxaAp56KzE/Sw6Jy+9be0g\nFZ5R+Wcn90NzyGNnJWlbSS+VsF+yuPSxci5292tbvjGzXhn3u0DSw+5+aKt950m6x8x+4e4vS3JJ\nn0la4uUJVliA4UxJQ939MzOekMAS1b2z7n67mR0taawKz65J0hOSDsx+M9BE6t5Z7mdRgrr3tjUz\nW1nStyRdmnUfNJ1cdbZ4nD1V6O3wzuyXOiZqlXNvx5t8kZmtqsI14kfaF1cMe6L4eStJL7v7x8r2\nd3W+pEfc/dHOjgVNqe6dNbPdJf1K0kWSHpLUS4Vn1P5kZt9yVjvCF9W9s+J+Fp2Xh962NlRSN3HZ\nI9qXq84WL7kcK+kP7v77zo4tZVz6WDlzS9hndRVeh3ODCpfRtHx8oMLfTZ+sBzKzrVRYmOGXZrZq\n8R/McsU/XsUKLxwGWqtrZ4suV+GO9zR3f9zdx0k6QNI3VfjNGdAa97NIUR7ua1s7SNJkd59cxjHQ\n2HLTWTNbU9JfJE2T9L1SjpEynlGrnLa/+W9ZIWeZNnn3Vl+/Xfx8qqSHI8ec04nzb6jCpWOTIn+2\nQNJVkn7cieOh8dW1s1a4ZmxDSde0+aPnVbgs4ktZj4Wmwf0sUlTv3v4vM1tD0mBJZ5WyP5pGLjpr\nhRUq71PhMcG+9Vzpt16YqFVPSyE3ljRVkszsSyo8+HxGktx9oZk9J+kr7n5+med7VNIubbJ9Jf1E\nhTvlWWUeH42vpp11dzez2ZLavtnqVyV1UeHFyMCScD+LFNW6t60NU+GxX1NdPoay1byzZraMpPEq\nvL/qdu7+VrnHTBETtSpx91fM7HlJ55nZpyr8FmKkpLZFO0nS/Wa2lKQ7JC2S1FfS3pJ+4u4zzWzZ\nYj7S3S9s53zzJM1rnZlZv+KXT/BGrOhIrTtbdI2kc4svNn5QhWV3z1JhVaeHKnbj0JC4n0WK6nRf\n2+IgSf9gVV10Rp06+1tJu0r6kaSeZtaz1Z9NcvdPKnDTco+JWnUdqMKSpLdKmqnCMqVntt7A3R8x\ns10knS3pdypcxztT0v36v38ApsIzDLymENVW685eLOlDSSNUuGTsbRVeeDyyGS9xQEm4n0WKat5b\nM+utwpu0n1iRW4BmU+vO7l7c9jeRP+sl6c1SbkRqjEXVAAAAACBf+M0hAAAAAOQMEzUAAAAAyBkm\n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\nDehpZiVyi841do4aAAAAAKB3mKgBAAAAQGKYqAEAAABAYpioAQAAAEBimKgBAAAAQGKYqAEAAABA\nYpioAQAAAEBiev119Rcknaquf7/6vQQljUVKdzzz+rBNMpuHVMdDZptT0liktMfT69yWmlmprPGk\nPJZ+/l+b8n6ZipLGk/JYojLb0y+8/saGzd7t9ZcTdktJY5HKG09TStovJY1FKm88TSlpv5Q0Fqm8\n8TSltP1S0nhKGkuTStsvJY2nhLHw0UcAAAAASAwTNQAAAABITD8nai/2cdtNK2ksUnnjaUpJ+6Wk\nsUjljacpJe2XksYilTeeppS2X0oaT0ljaVJp+6Wk8WQ/lr6dowYAAAAAqMdHHwEAAAAgMT2fqJnZ\ng2b2TzP7yMyGer39TpnZy2Z2zsyOTqjdaGaHzOxE9fOGfvYYy8xuNbM/m9k/zOzvZvarqp7leLqF\nzKaDzMYhs+kgs3HIbDrIbDxym45Sc9vTiZqZfU/S7yStkLRI0mNmtqiXPTRgu6QHv1UbkvSmu98u\n6c3q9xx8Kelpd18k6ceSNlSvR67jaRyZTQ6ZbYHMJofMtkBmk0NmI5Db5BSZ214fUbtf0kfu/m93\nvyRpt6SHe9xDR9z9sKT/fqv8sKQd1fUdkh7paVNT5O5j7n6kuv6ZpFFJc5XpeLqEzCaEzEYhswkh\ns1HIbELIbDRym5BSc9vridpcSacn/H6mquVutruPVdfPSprdz2amwszmS7pH0tsqYDwNIrOJIrOT\nIrOJIrOTIrOJIrPfidwmqqTcsphIw3x8Gc2sltI0s+sk7ZX0lLtfnHhbjuNBe3J8jcns9Jbja0xm\np7ccX2Myixxf59Jy2+uJ2n8k3Trh9x9Utdx9YmZzJKn6ea7P/UQzsxkaD/Qud99XlbMdTxeQ2cSQ\n2ZbIbGLIbEtkNjFkNgq5TUyJue31RO1vkm43sx+a2UxJP5P0Wo976IbXJK2rrq+T9Gofe4lmZibp\nJUmj7v78hJuyHE+XkNmEkNkoZDYhZDYKmU0ImY1GbhNSbG7dvacXSSslHZf0L0mber39Bvr/g6Qx\nSZc1/nnkJyTN0vhKMick/UnSjf3uM3IsSzR+CPgDSe9Xl5W5jqeL+4nMJnIhs9H7icwmciGz0fuJ\nzCZyIbNt7Stym8il1NxaNTgAAAAAQCJYTAQAAAAAEsNEDQAAAAASw0QNAAAAABLDRA0AAAAAEsNE\nDQAAAAASw0QNAAAAABLDRA0AAAAAEsNEDQAAAAAS839Z9jvaw6mnXwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bfcfbcbcf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "rand_id = np.random.choice(range(10000), size=10)\n",
    "X_pred = np.array([X_test[i] for i in rand_id])\n",
    "y_true = [y_test[i] for i in rand_id]\n",
    "y_true = np.argmax(y_true, axis=1)\n",
    "y_pred = model2.predict(X_pred)\n",
    "y_pred = np.argmax(y_pred, axis=1)\n",
    "plt.figure(figsize=(15, 7))\n",
    "for i in range(10):\n",
    "    plt.subplot(2, 5, i + 1)\n",
    "    plt.imshow(X_pred[i].reshape(28, 28), cmap='gray')\n",
    "    plt.title('True: %s \\n Pred: %s' % (y_true[i], y_pred[i]), size=15)\n",
    "plt.show()    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Summary"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Model | Accuracy (Train) | Accracy (Test) | Epochs | Time\n",
    "----  | ----             | ----           | ----   | ---\n",
    "MLP: FC(1024, 1024) | 100% | 98% | 50  | 56s\n",
    "Conv (64, 64, 128, 128, 256, 256), FC(128) | 100% | 99.5% | 50 | 460s"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
